package thread;

public class JoinDemo implements Runnable {
    @Override
    public void run() {
        try {
            System.out.println(Thread.currentThread().getName() + " start-----");
            Thread.sleep(100);
            System.out.println(Thread.currentThread().getName() + " end------");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            Thread t = new Thread(new JoinDemo(), "线程" + i);
            t.start();
            try {
                // 对比JoinDemo和NoJoinDemo的执行结果很容易发现，
                // 在没有使用join方法之间，线程是并发执行的；而使用join方法后，所有线程是顺序执行的。
                t.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        System.out.println("Finished~~~");
    }

}
